package collection.queue;

import java.util.LinkedList;
import java.util.Queue;
import java.util.PriorityQueue;

public class QueueDemo {
    public static void main(String[] args) {
        // 1. LinkedList实现普通队列（FIFO）
        Queue<String> queue = new LinkedList<>();

        // 添加元素
        queue.offer("张三"); // 成功返回true，失败返回false
        queue.offer("李四");
        queue.offer("王五");
        System.out.println("队列内容：" + queue);

        // 获取队首元素（不删除）
        System.out.println("队首元素：" + queue.peek());

        // 移除并返回队首元素
        while (!queue.isEmpty()) {
            String element = queue.poll(); // 队列为空返回null
            System.out.println("出队：" + element + "，剩余：" + queue);
        }

        // 2. PriorityQueue实现优先级队列（按自然顺序或自定义顺序）
        Queue<Integer> priorityQueue = new PriorityQueue<>();
        priorityQueue.offer(30);
        priorityQueue.offer(10);
        priorityQueue.offer(20);
        System.out.println("\n优先级队列：" + priorityQueue);

        // 出队（按优先级，从小到大）
        while (!priorityQueue.isEmpty()) {
            System.out.println("出队：" + priorityQueue.poll());
        }
    }
}
